Operators are applied to data values, or combine several data values (e.g. "1 + 1"). When an expression contains multiple operators the operators are applied in sequence according to a standard set of rules of operator precedence. The table below contains the available operators listed in order of precedence (for example, in the expression "1 + 2 * 3" the multiplication will occur before the addition). Where several identical operators occur in a row they are evaluated from left to right. Parentheses may be used to explicitly control the order of evaluation (e.g. "(1 + 2) * 3").
Some of the operators have several aliases. For example the relational 'less than' operator can be represented by the symbols 'lt' or '<', with no difference between these two usages. Capitalization does not matter in operator symbols and function names ('AND' is the same as 'And'). An expression may be composed of several subexpressions, each separated by the semicolon (;) character. The subexpressions will be evaluated in sequence, and the returned value of the expression will be the value of the final subexpression. Values produced by the initial subexpressions will be discarded, however these subexpressions may have side effects (e.g. the setVar() function) that influence subsequent subexpressions.
Operator  Syntax 

Logical ‘or’ 

Logical ‘and’ 

Binary ‘or’  <int>  <int> 
Binary ‘xor’  <int> ^ <int> 
Binary ‘and’  <int> & <int> 
Equality 

Inequality 

in  <value> in <list> 
Relational 
where op can be

Bit shift 

Concatenation  <string> + <value> 
Summation 

Product 

Negation   <value> 
Logical not 

Bitwise complement  ~ <integer> 