結合法則
二項演算が結合的ならば、その演算が反復して適用されるとき、その式においてきちんと(開きと閉じが)対になる括弧がどのように挿入されるかを気にすることなく、その演算結果が同じであることがわかる。そのことを一般化された結合法則 (generalized associative law) と言う。実例として、四つの元の積を、それらの因子の順番を変えることなく書き下せば、五種類の異なる計算順序が考えられる:
( ( a b ) c ) d , {\displaystyle ((ab)c)d,}
( a b ) ( c d ) , {\displaystyle (ab)(cd),}
( a ( b c ) ) d , {\displaystyle (a(bc))d,}
a ( ( b c ) d ) , {\displaystyle a((bc)d),}
a ( b ( c d ) ) . {\displaystyle a(b(cd)).
冪乗の演算子として ** や ^ がある言語があるが、数学の記法では a b c {\displaystyle a^{b^{c}}} と ( a b ) c {\displaystyle (a^{b})^{c}} のように、左を先にしたい場合に括弧が要るので、右結合すなわち a**b**c は a**(b**c) という意味であるとしたほうが数学の記法とは一致するが(たとえばRubyでは ** は右結合である(オブジェクトの種類等によるものではなく、構文上の規則である))、VBのように算術演算は全て左結合としているため冪乗の ^ も左結合、という言語もある。
非結合(non-associative)は、右結合でも左結合でもない、たとえば比較演算子 < のように、a < b < c の意味が (a < b) < c でも a < (b < c) でもない、というような演算子の結合性である(C言語では左結合として解釈し、比較結果の真理値を整数0か1として、次の比較を行うという通常は意図しない意味を持ってしまう。Pythonのように a < b < c と書いて、意図した通りの意味になる言語もある)。加算や乗算のみの演算のような順序によらない演算には順序を定めない、という言語も考えられるが、あまり見られない(算術と違いコンピュータ上の計算ではオーバーフロー等のために、真に順序によらない計算は実はあまりない、という事情もある)。