Operator Summary

Name Operator Example Precedence Parties Operand
or || 1||0; [2,3]|| [4,5]; 0||[4,5] 1 binary A, V, S, M
and && 1&&0; [2,3]&&[4,5]; 2 binary A, V, S, M
lt < 1<2; [2,3]<[4,5]; 2<[4,5]; 2<4 5 3 binary A, V, S, M
le <= 1<=2; [2,3]<=[4,5]; 2<=[4,5]; 2<4 5 3 binary A, V, S, M
equal == 1==2; [2,3]==[4,5];2==4 5 3 binary A, V, S, M
gt > 1>2; [2,3]>[4,5]; 2>4 5 3 binary A, V, S, M
ge >= 2>=1; [2,3]>=[4,5]; 2>=4 5 3 binary A, V, S, M
ne != or <> 1!=2; [2,3]!=[2,5]; 2!=4 5; 2<>5 3 binary A, V, S, M
bitOr (union) | 0 | 1 4 binary A, V, S, M
bitXor ^ 0 | 1 5 binary A, V, S, M
bitAnd (intersection) & 0 & 1 6 binary A, V, S, M
lshift << 1<<2 7 binary A, V, M
rshift >> 10>>2 7 binary A, V, M
add + 1+2; [1,2]+[3,4] 8 binary A, V, S, M
sub - 1-2; [3,4]-[1,2]; 5-[3,4] 8 binary A, V, S, M
mul * 2*3; [1,2]*[3,4]; 3*[4,5,6] 10 binary A, V, S, M
dot ** [1,2]**[3,4] 10 binary V, M
div / 2/3; 2.0/3; [2,3,4]/2 10 binary A, V, M
ratio \ 1\2; [2,3,4]\2 10 binary A, V, M
mod % 1%2; [2,3,4]%2 10 binary A, V, M
cast $ 1..8$4:2; cast(1..8, 4:2); cast(1.1,`int) 10 binary A, V, M
join <- 1 2 3 <- 4 10 binary A, V, M, T
pair : 1:3; 15 binary A
seq .. 5..9, 9..5; 15 binary A
not ! !0; ! 3 4 0 18 unary A, V, M
neg - -x; - 4 5 6; 18 unary A, V, M
at [] x[0], x[3 5 6], x[2,3], x[1:2,4:3] 20 binary V, M, T, D
member . x.price, d.2 20 binary T, D
function operator () x(1, 2) 20 binary A, V
ternary operator ? : (1+1>2)?1:0 25 ternary A, V, S, M, D, T

Note: In the column of operand, the symbols A, V, S, M, D, T denote scalar, vector, set, matrix, dictionary and table respectively.

Operator Syntax

An operator connects operands in an expression. We choose commonly used symbols to represent the variety of operations. To make it easy to remember the operators, we give a name to each operator. You can use the name of the operator instead of the symbol in any expression. Let's take the operator "+" as an example.

x=1;
y=2;

// function as an operator

x+y;
// output
3


x add y;
// output
3

add(x,y);
// output
3


x.add(y);
// output
3

A user defined function can also be used as an operator. This function must have immutable parameters.

def f(a, b){return a*a + b*b - 2*a*b};
3 f 4;
// output
1