# Operators¶

In this chapter we will introduce the operators provided by the Dragon programming language.

## Arithmetic Operators¶

The next table presents all of the arithmetic operators provided by the Dragon 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 Dragon language. Assume variable X=50 and variable Y=10 then:

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

= |
Equal |
x = y |
False |

== |
Equal 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 Dragon 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 |

Another style

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

&& |
Logical AND |
x && y |
False |

|| |
Logical OR |
x || y |
True |

! |
Logical Not |
! x |
False |

## Bitwise Operators¶

The next table presents all of the bitwise operators provided by the Dragon 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 Dragon 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:

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