< Previous | Contents | Manuals Home | Boris FX | Next >
Expression Operator Precedence
Sizzle uses a simplified operator precedence, especially compared to C++. The precedences have been adjusted to make embedding script in boilerplate easy. The operators are listed from highest to lowest.
Terms (expr), [index], ob.attr, function calls, #ob,
$indirection
Autoincrements ++x, --x, x++, x—
Powers x**2
Negations -x, ~x
Multiplications x*y, x/y, x%y, x&y, x^y, x<<y, x>>y
Additions x+y, x-y, x|y
Selection (q ? x : y)
Relations x<y, x>y, x==y, x!=y, x<=y, x>=y
Boolean Negate !(x==3)
Boolean And x>y && y>z
Boolean Or x==5 || y>3
Assignments x=y, x+= y, x -= y, x *= y, x /= y, x &= y, x |= y, x ^= y
Concatenation “a” x=”b” 2+3 x produces “a5b”
All numbers are 64-bit floating point, but hexadecimal constants, logical shifts, and booleans are treated as 32-bit integers.
Note that the assignment operators do not produce output to the file, as in the concatenation example above. The mini-script @[x=”Hi” “there”]@ writes “there” (without the quotes) to the output file, assigning “Hi” to the variable x. This is because concatenation is lower in the precedence table than assignment, so the assignment “=” binds only to “Hi”. If you wanted x to be “Hi There”, you would write [@x=(“Hi” “There”)]@, which would output nothing. Though this means you need parentheses for this example, the precedence above eliminates the need to end each line with a semicolon or end of line.
©2023 Boris FX, Inc. — UNOFFICIAL — Converted from original PDF.