Operators
Operators are the base commands each programming language is built on. They provide ability to perform basic mathematical and logical operations.
Requirements
To understand this article, you should read the following articles:
Terms
 Operand
 An operand is any value given to an operator.
 Expression
 An expression is basically any code that returns a value. Read expression for more information.
 Unary Operator
 An unary operator is an operator that requires only one operand.
 Unary operation:
operator expression
 Binary Operator
 A binary operator is an operator that requires two operands.
 Binary operation:
expression operator expression
Operators
Assignment Operators
Assignment operators are used to assign values to a variable. OFP's scripting language provides only one assignment operator.
Assignment:
identifier = expression
Example 1:
You might think that this operator compares a and b, but that is not the case. = simply sets the left value to be the right one. Other assignment operators like +=, = that can be found in other programming languages do not exist in SQF/SQS.
Example 2:
Arithmetic Operators
Remember arithmetic operations from school? These work just the same way. All operands of arithmetic operations must be Numbers. Arithmetic operations always return a Number.
Operator  Name  Example 

  Negation  a 
+  Duplication  +a 
(  Bracket  (expression) 
Operator  Name  Example 

+  Addition  
  Subtraction  
*  Multiplication  
/  Division  
%  Modulo  
mod  Modulo  
^  Raise to the power of 
Logical Operators
Logical operators evaluate Boolean values. All operands of logical operations are Booleans. A logical operation always returns a Boolean.
Operator  Name  Example 

!  Not  !a 
not  Not  not a 
The Notoperator always returns the inverse Boolean value. If a Boolean a is true, !a returns false and vice versa.
Operator  Name  Example 

&&  And  
and  And  
  Or  
or  Or 
 And only returns true if both operands are true
 Or returns true if one or both operands are true
There is no Xor, Nor and Nand operator. Those can be simulated using the basic operators though:
Name  Combination 

Xor  
Nor  
Nand 
 Xor returns true if exactly one of both values is true
 Nor returns true if none of both values is true
 Nand returns true if not both values are true at the same time
Comparison Operators
Comparison operators compare two values. Operands of comparisons may be of type Number, Side, String, Object, Group, Structured Text, Config, Display or Control for == and !=, and Number for < > >= <=. Comparisons always return a Boolean: true if the comparison matches, false if not.
Operator  Name  Example 

==  Equal  
!=  Not equal  
<  Less than  
>  Greater than  
<=  Less or equal  
>=  Greater or equal 
Array Operators
The scripting language offers own operators to deal with arrays. All operands, of course, have to be of type Array. The return value of an array operation is an Array.
Operator  Name  Example 

+  Copy  +myArray 
Normally arrays are assigned by reference. That means, if you assign array a to array b and change a afterwards, also b is changed. Use the copy operator to avoid this otherwise useful feature.
Example 1:
Example 2:
Operator  Name  Example 

+  Concatenation  
  Removal 
 + adds the second operand on the end of the first operand
  removes all elements of the second operand from the first operand
Example 1:
Example 2:
String Operators
The scripting language offers one single string operator to concatenate strings. Both operands must be Strings. The return value of a string operation is a String.
Operator  Name  Example 

+  Concatenation 
 + adds the second operand on the end of the first operand
Example:
Order of Precedence
Order of operations, also called operator precedence, is a set of rules specifying which procedures should be performed first in a mathematical expression.
Precedence Overview
Precedence  Type of Operator  Examples 

11 
Nular operators (commands with no arguments):


10 
Unary operators (commands with 1 argument):


9  Hashselect operator  
8  Power operator  
7  
6  
5  N/A  
4 
Binary operators (commands with 2 arguments):


3  
2  Logical and operator  
1  Logical or operator 
Examples
Input  Process  Comment 

result equals 7, and not 9 (see also PEMDAS)  
sleep 10 will return Nothing, then + random 20 will be calculated but not used. 