Operations and precedence
Numbat operators and other language constructs, ordered by precedence form high to low:
Operation / operator | Syntax |
---|---|
square, cube, … | x² , x³ , x⁻¹ , … |
factorial | x! |
exponentiation | x^y , x**y |
multiplication (implicit) | x y (whitespace) |
unary negation | -x |
division | x per y |
division | x / y , x ÷ y |
multiplication (explicit) | x * y , x · y , x × y |
subtraction | x - y |
addition | x + y |
comparisons | x < y , x <= y , x ≤ y , … x == y , x != y |
logical negation | !x |
logical ‘and’ | x && y |
logical ‘or’ | x || y |
unit conversion | x -> y , x → y , x ➞ y , x to y |
conditionals | if x then y else z |
reverse function call | x |> f |
Note that implicit multiplication has a higher precedence than division, i.e. 50 cm / 2 m
will be parsed as 50 cm / (2 m)
.
Also, note that per
-division has a higher precedence than /
-division. This means 1 / meter per second
will be parsed as 1 / (meter per second)
.
If in doubt, you can always look at the pretty-printing output (second line in the snippet below) to make sure that your input was parsed correctly:
>>> 1 / meter per second
1 / (meter / second)
= 1 s/m