Operator precedence
Revision as of 05:03, 3 November 2019 by Nicholas Wilson (talk | contribs) (remove unordered comparison operators)
Priority | Description | Operators | Comments |
---|---|---|---|
15 | Template instantiation | ! |
Top-level , in rhs expression treated specially. Cannot be chained.
|
14.5 | Lambda abstraction | => |
Not a real operator, occurs twice, this is binding power to the left. |
14 | Postfix operators | . ++ -- ( [ |
( and [ treat top-level , in rhs expression specially and require balanced ) or ] in order to be completed.
|
13 | Power operator | ^^ |
Right-associative. |
12 | Unary operators | & ++ -- * + - ! ~ cast |
|
11 | Multiplicative operators | * / % |
|
10 | Additive operators | + - ~ |
Binary ~ is the array concatenation operator.
|
9 | Bit shift operators | << >> >>> |
>>> is the always logical shift operator.
|
6a | Comparison operators | == != > < >= <= in !in is !is
|
Unordered with respect to bitwise operators. Cannot be chained. |
8b | Bitwise And | & |
Unordered with respect to comparison operators. |
7b | Bitwise Xor | ^ |
Unordered with respect to comparison operators. |
6b | Bitwise Or | | |
Unordered with respect to comparison operators. |
5 | Logical And | && |
Short-circuit. |
4 | Logical Or | || |
Short-circuit. |
3 | Conditional operator | ? : |
Right-associative. |
2 | Assignment operators | = ^^= *= /= %= += -= ~= <<= >>= >>>= &= |= ^=
|
Right-associative. |
1.5 | Lambda abstraction | => |
Not a real operator, occurs twice, this is binding power to the right. |
1 | Comma operator | , |
Not to be confused with other uses of , , though their precedence is the same.
|
0 | Range separator | .. |
Not a real operator, hardwired into syntax at specific points. |