# Operators¶

In this chapter we will introduce the operators provided by the Ring programming langauge.

## Arithmetic Operators¶

The next table presents all of the arithmetic operators provided by the Ring language. Assume variable X=50 and variable Y=10 then:

Operator | Description | Example | Result |
---|---|---|---|

+ | Add | x+y | 60 |

- | Subtract | x-y | 40 |

* | Multiplies | x*y | 500 |

/ | Divide | x/y | 5 |

% | Modulus | x%y | 0 |

++ | Increment | x++ | 51 |

- - | Decrement | x- - | 49 |

## Relational Operators¶

The next table presents all of the relational operators provided by the Ring language. Assume variable X=50 and variable Y=10 then:

Operator | Description | Example | Result |
---|---|---|---|

= | Equal | x = y | False |

!= | Not Equal | x != y | True |

> | Greater than | x > y | True |

< | Less than | x < y | False |

>= | Greater or Equal | x >= y | True |

<= | Less than or Equal | x <= y | False |

## Logical Operators¶

The next table presents all of the logical operators provided by the Ring language. Assume variable X=True and variable Y=False then:

Operator | Description | Example | Result |
---|---|---|---|

and | Logical AND | x and y | False |

or | Logical OR | x or y | True |

not | Logical Not | not x | False |

## Bitwise Operators¶

The next table presents all of the bitwise operators provided by the Ring language. Assume variable X=8 and variable Y=2 then:

Operator | Description | Example | Result |
---|---|---|---|

& | Binary AND | x & y | 0 |

| | Binary OR | x | y | 10 |

^ | Binary XOR | x ^ y | 10 |

~ | Binary Ones Complement | ~x | -9 |

<< | Binary Left Shift | x << y | 32 |

>> | Binary Right Shift | x >> y | 2 |

## Assignment Operators¶

The next table presents all of the assignment operators provided by the Ring language.

Assume variable X=8 then:

Operator | Description | Example | Result |
---|---|---|---|

= | Assignment | x = 10 | x=10 |

+= | Add AND assignment | x += 5 | x=13 |

-= | Subtract AND assignment | x -= 3 | x=5 |

*= | Multiply AND assignment | x *= 2 | x=16 |

/= | Divide AND assignment | x /= 3 | x=2.67 |

%= | Modulus AND assignment | x %= 2 | x=0 |

<<= | Left shift AND assignment | x <<= 2 | x=32 |

>>= | Right shift AND assignment | x >>= 2 | x=2 |

&= | Bitwise AND assignment | x &= 4 | x=0 |

|= | Bitwise OR and assignment | x |= 3 | x=11 |

^= | Bitwise XOR and assignment | x ^= 4 | x=12 |

## Misc Operators¶

Operator | Description |
---|---|

:literal | using : before identifier mean literal |

Start:End | create list contains items from start to end |

[list items] | define list items |

list[index] | access list item |

obj.name | using the dot operator to access object members (attributes/methods). |

obj {stmts} | execute statements with direct access to object attributes & methods |

func(para,...) | call function using parameters separated by comma |

## Operators Precedence¶

The next table present operators from higher precedence (Evaluated first) to lower precedence.

Operator |
---|

. [] () {} |

- ~ :Literal [list items] |

++ - - |

Start:End |

* / % |

+ - |

<< >> |

& |

| ^ |

< > <= >= |

= != |

not |

and or |

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

Example:

```
See 3+5*4 # prints 23
```