# Expressions

Expressions can be real numbers (e.g. 3.4), hexadecimal numbers, starting with a \$ sign (e.g. \$00FFAA), strings between single or double quotes (e.g. 'hello' or "hello") or more complicated expressions. For expressions, the following binary operators exist (in order of priority):

• && || ^^: combine Boolean values (&& = and, || = or, ^^ = xor)
• < <= == != > >=: comparisons, result in true (1) or false (0)
• | & ^: bitwise operators (| = bitwise or, & = bitwise and, ^ = bitwise xor)
• << >>: bitwise operators (<< = shift left, >> = shift right)
• * / div mod: multiplication, division, integer division, and modulo

Note that value of x div y is the value of x/y rounded in the direction of zero to the nearest integer. The mod operator returns the remainder obtained by dividing its operands. In other words, x mod y = x - (x div y) * y. Also, the following unary operators exist:

• !: not, turns true into false and false into true
• -: negates the next value
• ~: negates the next value bitwise

As values you can use numbers, variables, or functions that return a value. Sub-expressions can be placed between brackets. All operators work for real values. Comparisons also work for strings and + concatenates strings. (Please note that, contrary to certain languages, both arguments to a Boolean operation are always computed, even when the first argument already determines the outcome.)

Example

Here is an example with some assignments.

{
x = 23;
color = \$FFAA00;
str = 'hello world';
y += 5;
x *= y;
x = y << 2;
x = 23*((2+4) / sin(y));
str = 'hello' + " world";
b = (x < 5) && !(x==2 || x==4);
}

Contributor: Mark Overmars