Operators listed by precedence, lowest first: | expr1 | expr2 ? expr1 : expr1
| ternary operator
|
| | expr2 | expr3 || expr3
| boolean or
| | | expr3 | expr4 && expr4
| boolean and
| | | expr4 | expr5 == expr5 expr5 != expr5 expr5 >= expr5 expr5 > expr5 expr5 <= expr5 expr5 < expr5 expr5 IS expr5 expr5 ISNOT expr5 expr5 ISA expr5 expr5 ISNOTA expr5
| equal not equal greater than or equal greater than smaller than or equal smaller than same object not same object same class not same class
| | | expr5 | expr6 .. expr6
| string concatenation
| | | expr6 | expr7 & expr7 expr7 | expr7 expr7 ^ expr7
| logical and logical or logical xor
| | | expr7 | expr8 << expr8 expr8 >> expr8
| bitwise left shift bitwise right shift
| | | expr8 | expr9 + expr9 expr9 - expr9
| add subtract
| | | expr9 | expr10 * expr10 expr10 / expr10 expr10 % expr10
| multiply divide remainder
| | | expr10 | ++expr11 --expr11 expr11++ expr11--
| pre-increment pre-decrement post-increment post-decrement
| can have both pre- and post-
| | expr11 | -expr12 !expr12 ~expr12
| negate boolean invert bitwise invert
| | | expr12 | .expr13 | member | | | expr13 | ( expr1 ) 1234 0x1abc 0b010110 'c' "string" R"string" name [ expr1, ... ] { expr1: expr1, ... } NIL THIS NEW(expr1, ...) TRUE FALSE FAIL OK
| grouping number hex number binary number character constant string constant raw string constant identifier list initializer dict initializer
| |
Note: compared to C the precedence of &, | and ^ is different. In C their precedence is lower than for comparative operators, which often leads to mistakes. |