Operators

The operators available in DM are very similar to other C-like languages. Their precedence is also similar.

Here's the base operators:

Addition = "+"
Subtraction = "-"
Multiplication = "*"
Division = "/"
Powower = "**"
Modulo = "%"

Conditional operators:

Equal = "=="
Not Equal = "!="
And = "&&"
Or = "||"
Less Than = "<"
Greater Than = ">"
Less Than or Equal = "<="
Greater Than or Equal = ">="

Unary operators:

Not = "!"
Binary Not = "~"
Negate = "-"
Increment = "++"
Decrement = "--"

Assignment operators:

Assign = "="
Addition Assign = "+="
Subtract Assign = "-="
Multiply Assign = "*="
Divide Assign = "/="
Modulo Assign = "%="
Assign Into = ":=" // walrus operator
And Assign = "&&="
Or Assign = "||="

Binary operators:

Binary And = "&"
Binary Or = "|"
Binary Xor = "^"
Left Shift = "<<"
Right Shift = ">>"

Binary assignment operators:

Binary And Assign = "&="
Binary Xor Assign = "^="
Binary Or Assign = "|="
Left Shift Assign = "<<="
Right Shift Assign = ">>="

Equivalence operators:

Equivalent = "~="
Not Equivalent = "~!"

Special BYOND operators

In = "in" // Used for ranges ex. `for(var/x in 1 to 5)`
To = "to" // Only appears in the RHS of `In`, above
Step = "step" // Only in for loops, ex. `for(var/x in 10 to 1 step -1)`

There is also the C-style ternary operator expression: condition ? if_true : if_false.

Activity

Go over the following snippet. What will the value of N be at each line?

var/N
N = 0
N += 1+1*2
if(N - 1 == 2) N = 2
if(N==2 && 1/2==0.5) N = 0.5