170 likes | 633 Views
Precedence and Associativity. The sequence in which different operators in an expression are executed is determined by the precedence of the operators. Operators with a higher precedence are executed before operators with a lower precedence.
E N D
Precedence and Associativity • The sequence in which different operators in an expression are executed is determined by the precedence of the operators. • Operators with a higher precedence are executed before operators with a lower precedence. • In the following table, operators are in descending order of precedence, so those with the highest precedence are at the top. • Operators within the same group in the table are of equal precedence. tMyn
The sequence of execution of operators with the same precedence in an expression is determined from their associativity. • The associativity of an operator determines how it groups with its operands in an expression. • Operators may be left-associative, right-associative or non-associative. tMyn
All unary operators and all assignment operators are right associative. • Almost all other operators are left associative. • With the throw operator (exception throwing) the associativity is not available. tMyn
Associativity is only needed when the operators in an expression have the same precedence. Usually + and - have the same precedence. Consider the expression 7-4+2. The result could be either (7-4)+2 = 5 or 7-(4+2) = 1. The former result corresponds to the case when + and - are left-associative. The latter result corresponds to the case when + and - are right-associative. Operators with the same precedence always have the same associativity. The operators +, -, * and / are left-associative. tMyn
A left-associative operator can be said to associate "to the left", and similarly a right-associative operator can be said to associate "to the right". To understand the intuition behind these names, consider again the expression 7-4+2. If + and - are left-associative then the middle operand (4) belongs to the operator on its left (hence the name "to the left"). If + and - are right-associative then the middle operand belongs to the operator on its right (hence the name "to the right"). tMyn
A left-associative operator may also be said to have "left to right" associativity, and a right-associative operator may also be said to have "right to left" associativity. This is somewhat counter-intuitive considering the above paragraph. To understand the intuition behind these names consider the expression 1+2+3+4+5. If + is left-associative, the addition operations are carried out left to right, i.e. the result is (((1+2)+3)+4)+5. If + is right-associative, the addition operations are carried out right to left, i.e. the result is 1+(2+(3+(4+5))). tMyn