# Expressions and operators

Expressions consist of constants, variables, operators, and parentheses. Constants and variables must be of the integer type. The value of an expression is also an integer.
The value of a relational expression (formed using relational operators) is 1, if it is true, or 0 if false.

The following are operators:

Precedence | Operators | Category | Note
--- | --- | --- | ---
1, high | not ~ | bitwise negation | "~" is available in version 4.53 or later
! | logical negation | available in version 4.53 or later
+ | plus unary |
- | minus unary |
2 | * | multiplication |
/ | division |
% | remainder | the value of expression A % B is the remainder of A / B.
3 | + | addition |
- | subtraction |
4 | >> << | arithmetic shift | available in version 4.54 or later
>>> | logical shift | available in version 4.54 or later
5 | and & | bitwise conjunction | "&" is available in version 4.53 or later
6 | xor ^ | bitwise exclusive disjunction | "^" is available in version 4.53 or later.
7 | or | | bitwise disjunction | "|" is available in version 4.53 or later.
8 | < > <= >= | relational |
9 | = == <> != | relational | "==" and "!=" are available in version 4.54 or later.
10 | && | logical conjunction | version 4.53 or later.
11, low | || | logical disjunction | version 4.53 or later.

"and", "or", "xor" and "not" are bitwise operator, not logical operator.

    Example:
        1 + 1
        4 - 2 * 3      The value is -2.
        15 % 10        The value is 5.
        3 * (A + 2)    A is an integer variable.
        A and not B
        A <= B         A and B are integer variables. The value is 1,
                       if the expression is true, or 0 if false.