**Introduction to Scala **Operaors

**Operators** are the symbols which perform the operation on the some values. These values are known as **operands**. Scala have following operators –

- Arithmetic Operators
- Relational Operators
- Logical Operators
- Assignment Operators
- Bitwise Operators

**Watch this Apache-Spark-Scala video**

**1. Arithmetic Operators**

Operator | Operator Name | Description | Example |

+ | Addition | Adds two operands | I = 40, J= 20I + J = 60 |

– | Subtraction | Subtracts second operand from the first | I = 40, J= 20I – J = 20 |

* | Multiplication | Multiplies both operands | I = 40, J= 20I * J = 800 |

/ | Divide | Perform division operation | I = 40, J= 20I / J = 2 |

% | Modulus | Return the remainder after Division | I = 40, J= 20I % J = 0 |

**2. Relational Operators**

It is also known as comparison operator because it compares the values. After comparison it returns the Boolean value i.e. either true or false.

Operator | Operator Name | Description | Example |

== | Equal to | If the values of two operands are equal then then it returns true. | I = 20, J = 20(I == J) is true |

!= | Not Equal to | If the values of two operands are not equal then it returns true. | I = 20, J = 20(I == J) is False |

< | Less than | If the value of left operand is less than the value of right operand then it returns true | I = 40, J = 20(I < J) is False |

> | Greater than | If the value of left operand is greater than the value of right operand then it returns true | I = 40, J = 20(I > J) is True |

<= | Less than or equal to | If the value of left operand is less than or equal to the value of right operand then it returns true. | I = 40, J = 20(I <= J) is False |

>= | Greater than or equal to | If the value of left operand is greater than or equal to the value of right operand then it returns true. | I = 40, J = 20(I >= J) is True |

Operator | Operator Name | Description | Example |

and | Logical AND | When Both side condition is true the result is true otherwise false | 2<1 and 2<3False |

or | Logical OR | When at least one condition is true then result is true otherwise false | 2<1 or 2<3True |

not | Logical NOT | Reverse the condition | Not(5>4)False |

**4. Assignment Operator**

Operator | Operator Name | Description | Example |

= | Assignment | It assigns value from right side operand to left side operand | I = 40 It assigns 40 to I |

+= | Add then assign | It performs addition and then result is assigned to left hand operand | I+=J that meansI = I + J |

-= | Subtract then assign | It performs subtraction and then result is assigned to left hand operand | I-=J that meansI = I – J |

*= | Multiply the assign | It performs multiplication and then result is assigned to left hand operand. | I*=J that meansI = I * J |

/= | Divide then assign | It performs division and then result is assigned to left hand operand | I/=J that meansI = I / J |

%= | Modulus then assign | It performs modulus and then result is assigned to left hand operand | I%=Jthat meansI = I % J |

<<= | Left shift AND assignment operator | It performs Binary left shift and then result is assigned to left hand operand | I<<=5 that means I = I << 5 |

>>= | Right shift AND assignment operator | It performs Binary right shift and then result is assigned to left hand operand | I>>=5 that means I = I >>=5 |

&= | Bitwise AND assignment operator | It performs bitwise AND and then result is assigned to left hand operand | I &= 5 that meansI = I & 5 |

^= | bitwise exclusive OR and assignment operator | It performs bitwise exclusive OR and then result is assigned to left hand operand | I ^= 5 that meansI = I ^ 5 |

|= | bitwise inclusive OR and assignment operator | It performs bitwise inclusive OR and then result is assigned to left hand operand | I |= 5 that meansI = I | 5 |

**5. ****Bitwise Operators**

It performs bit by bit operation. Suppose there are two variable I = 10 and J = 20 and their binary values are

I = 10 = 0000 1010

J = 20 = 0001 0100

Operator | Operator Name | Description | Example |

& | Binary AND | If both bits are 1 then 1 otherwise 0 | I & J0000 0000 |

| | Binary OR | If one of the bit is 1 then 1 otherwise 0 | I | J0001 1110 |

^ | Binary XOR | If both bit are same then 0 otherwise 1 | I ^ J0001 1110 |

~ | Binary Complement | If bit is 1 the make it 0 and if bit is 0 the make it 1 | ~I1111 0101 |

<< | Binary Left Shift | The left operand is moved left by the number of bits specified by the right operand. | I << 2 will give 240 i.e. 1111 0000 |

>> | Binary Right Shift | The left operand is moved right by the number of bits specified by the right operand. | I >> 2 will give 15 i.e. 1111 |

>>> | Shift right zero fill operator | Left operands are shifted right by the no. of bits specified by right operand and shifted values are filled up with 0. | I >>>2 will give 15 i.e. 0000 1111 |

**Operator Precedence**

Category | Operator | Associativity |

Postfix | () [] | Left to right |

Unary | ! ~ | Right to left |

Multiplicative | * / % | Left to right |

Additive | + – | Left to right |

Shift | >> >>> << | Left to right |

Relational | > >= < <= | Left to right |

Equality | == != | Left to right |

Bitwise AND | & | Left to right |

Bitwise XOR | ^ | Left to right |

Bitwise OR | | | Left to right |

Logical AND | && | Left to right |

Logical OR | || | Left to right |

Assignment | = += -= *= /= %= >>= <<= &= ^= |= | Right to left |