Equals recognizes all common mathematical operators:

Operator Function Description
Standard Operators
+ add addition and unary positive
- or  subtract and negate subtraction and negation
* or × multiply multiplication
/ or ÷ divide division
% mod or percent modulus or a percentage of a value
! factorial factorial
** pow exponentiation
º or ° dtor converts the value to radians
Bitwise Operators
& and bitwise and
| or bitwise or
^ xor bitwise xor
~ not bitwise not
<< lshift bitwise left shift
>> rshift bitwise right shift
Comparison Operators
== or = l_eq equal
!= l_neq not equal
< l_lt less than
> l_gt greater than
<= or =< or  or  l_ltoe less than or equal
>= or => or  or  l_gtoe greater than or equal
Logical Operators
&& or  l_and logical and
|| or  l_or logical or
! or ¬ l_not logical not


The Degree Operator

The degree operator (°) is interesting. Because all of the trigonometric functions require their parameters to be passed in radians, the degree operator will convert its operand into radians. Thus, 45° is equivalent to dtor(45).

The % Sign

The % sign is usually interpreted as a percentage. Example:

50 + 10% = 55

By default, % is shorthand for /100. In other words, 42% becomes 42/100, or 0.42.

However, if the % term is the right hand side of either a subtraction or addition operation (such as in 50 + 10%), then the percent is evaluated as a percentage of the left-hand side (i.e. “50 plus 10% of 50“).

On many computer systems the % sign is used as the modulo operator. You can always calculate the modulus this way:

mod(10, 3) = 1

However, if you enable “Interpret percent sign (%) as modulo” in the preferences, then:

10 % 3

… evaluates to 1 (the remainder after 10 is divided by 3).

In this case, you can still request a percentage by using the function name directly:

(10 % 3) + percent(50) = 1.5

Logical Values

The comparison and logical operators both return a boolean value. During evaluation, that boolean value is strictly interpreted as either 0 (false) or 1 (true). For example, 41 + (1 && 1) is literally 41 + true, but is evaluated as 42.

On the same note, the operands to the logical operators are also interpreted as booleans.

Factorial and Logical Not

Differentiating between factorial (!) and a logical not (!) is difficult. A ! is interpreted as a logical not if:

Otherwise it is treated as a factorial. A ¬ token is always treated as a logical not (for obvious reasons).

Parentheses and Associativity

For simplification in dealing with implicit multiplication, an opening parenthesis is considered a right associative unary operator, and a closing parenthesis is considered a left associative unary operator.