Arithmetic Operators

Silk supports arithmetic operators as follows, assume A is 10, and B is 20

- + Adds two operands. A + B = 30
- - Subtracts second operand from the first. A - B = -10
- * Multiplies both operands. A * B = 200
- / Divides numerator by de-numerator. B / A = 2
- % Modulus Operator and remainder of after an integer division. B % A = 0
- ++ Increment operator increases the integer value by one. A++ = 11
- -- Decrement operator decreases the integer value by one. A-- = 9

--i; ++i; a=i++; //error syntax

a=1;

b="2";

print(a+b);//will print 12Relational Operators

Silk supports the following relational operators, assume A is 1, and B is 2

- == Checks if the values of two operands are equal or not. If yes, then the condition becomes true. (A == B) is false
- != Checks if the values of two operands are equal or not. If the values are not equal, then the condition becomes true. (A != B) is true
- > Checks if the value of left operand is greater than the value of right operand. If yes, then the condition becomes true. (A > B) is false
- < Checks if the value of left operand is less than the value of right operand. If yes, then the condition becomes true. (A < B) is true
- >= Checks if the value of left operand is greater than or equal to the value of right operand. If yes, then the condition becomes true. (A >= B) is false
- <= Checks if the value of left operand is less than or equal to the value of right operand. If yes, then the condition becomes true. (A <= B) is true

Logical Operators

Silk supports the following logical operators, assume A is 1, and B is 0

- && Called Logical AND operator. If both the operands are non-zero, then the condition becomes true. (A && B) is false
- || Called Logical OR Operator. If any of the two operands is non-zero, then the condition becomes true. (A || B) is true
- ! Called Logical NOT Operator. If a condition is true, then Logical NOT operator will make it false. !(A && B) is true

Assignment Operators

- = Simple assignment operator. Assigns values from right side operands to left side operand.

C = A + B will assign the value of A + B to C - += Add AND assignment operator. It adds the right operand to the left operand and assign the result to the left operand.

C += A is equivalent to C = C + A - -= Subtract AND assignment operator. It subtracts the right operand from
the left operand and assigns the result to the left operand.

C -= A is equivalent to C = C - A - *= Multiply AND assignment operator. It multiplies the right operand with
the left operand and assigns the result to the left operand.

C *= A is equivalent to C = C * A - /= Divide AND assignment operator. It divides the left operand with the right operand and assigns the result to the left operand.

C /= A is equivalent to C = C / A - %= Modulus AND assignment operator. It takes modulus using two operands and assigns the result to the left operand.

C %= A is equivalent to C = C % A

Here is the Silk operators precedence listed from higher precedence to lower:

- Paren ()
- Postfix [] .
- Not !
- Multiplicative * / %
- Additive + -
- Relational < <= > >=
- Equality == !=
- Logical AND &&
- Logical OR ||
- Assignment = += -= *= /= %= ++ --

Silk currently does not support bitwise operators.