# #515 – Binary Operators Are Left-Associative

February 8, 2012 3 Comments

When an expression contains more than one binary operators, where the operators are identical or have the same precedence, the operators are *left-assocative*. This means that the expression is evaluated from left to right.

For example, the result of the expression shown below is 5, rather than 20. 80 is divided by 8 to get an intermediate result of 10. 10 is then divided by 2 to get a result of 5.

double result = 80 / 8 / 2;

This means that the above expression is equivalent to:

double result = (80 / 8) / 2;

If you want to force the division of the 2nd and 3rd operands to happen first, you could use parentheses around them:

// result = 20 double result = 80 / (8 / 2);

Pingback: #1,074 – Use Parentheses in Expressions to Make Code More Readable | 2,000 Things You Should Know About C#

Pingback: #1,075 – Operator Precedence Doesn’t Affect Operand Evaluation Order | 2,000 Things You Should Know About C#

This isn’t always true, especially not anymore.

Exception when this post was written (which was indicated in the next post): assignment operators are right-associative, but they still qualify as binary operators.

Exception that didn’t exist at the time: null-coalescing operators are also right-associative.