# Binary Operators

The following binary operators supported:

Arithmetic Operators
`*` `×` (U+00D7) `⋅` (U+22C5) Multiplication. Returns the product of numeric operands. Can be overridden.
`/` `÷` (U+00F7) `∕` (U+2215) Division. Returns the quotient of numeric operands. Can be overridden.
`+` Addition. Returns the sum of numeric operands. Can be overridden.
`-` `−` (U+2212) Subtraction. Returns the difference of numeric operands. Can be overridden.

Comparison Operators
`==` Equals. Returns `true` if operands are equal, or `false` otherwise. Equality check algorithm can be customized.
`<>` `≠` (U+2260) Not equals. Returns `false` if operands are not equal, or `false` otherwise. Can be customized together with `==` operator.
`<=>` Compare. Compares operands. The result of comparison may have arbitrary type. Comparison algorithm can be customized.
`>` Greater than. Returns `true` if the left operand is greater than the right one, or `false` otherwise. Can be customized together with `<=>` operator.
`>=` `≥` (U+2265) Greater than or equal to. Returns `true` if the left operand is greater than or equal to the right one, or `false` otherwise. Can be customized together with `<=>` operator.
`<` Less than. Returns `true` if the left operand is less than the right one, or `false` otherwise. Can be customized together with `<=>` operator.
`<=` `≤` (U+2264) Less than or equal to. Returns `true` if the left operand is less than or equal to the right one, or `false` otherwise. Can be customized together with `<=>` operator.

Special Operator
`~` Suffix. A special operator capable of representing things such as quantities, like `3~minutes`. Can be customized.

Note, that the right operand should be at the same line with the left operand and operator sign. The following code will raise a compile time error:

``````1 +  ~~ Right operand expected here.
2
``````

While the following code will not be interpreted as a binary operator:

``````1    ~~ First statement.
+ 2  ~~ Second statement.
``````

An underscore should be used to place the binary operator on multiple lines:

``````~~ Place an underscore on the next line (__recommended practice__).
1 +
_2

~~ Place an underscore before the sign.
1
_+ 2
``````

## Operators Precedence

Binary operators has lower precedence than unary operators and reference qualifiers.

Precedence Operator
1 `~`
2 `*`, `×`, `⋅`, `/`, `÷`, `∕`
3 `+`, `-`, `−`
4 `<=>`
5 `==`, `<>`, `≠`, `>`, `>=`, `≥`, `<`, `<=`, `≤`