( categories: operators )
The list is ordered from highest precedence to lowest:
| left | terms and list operators (leftward) |
| left | -> |
| nonassoc | ++ -- |
| right | ** |
| right | ! ~ \ and unary + and - |
| left | =~ !~ |
| left | * / % x |
| left | + - . |
| left | << >> |
| nonassoc | named unary operators |
| nonassoc | < > <= >= lt gt le ge |
| nonassoc | == != <=> eq ne cmp |
| left | & |
| left | | ^ |
| left | && |
| left | || |
| nonassoc | .. ... |
| right | ?: |
| right | = += -= *= etc. |
| left | , => |
| nonassoc | list operators (rightward) |
| right | not |
| left | and |
| left | or xor |
Notes:
The left column of the list shows the associativity precedence of the operators.
The associativity column shows the order of evaluation of the operators when there are 2 (or more) operators with the same precedence in a given expression. 'left' means that the leftmost operator is evaluated first; likewise, 'right' evaluates first the rightmost operator.
For example, in the expression
a + b - c
a + b is evaluated first (left associativity)





