# Language Reference - Operators

AutoIt has the following assignment, mathematical, comparison, and logical operators.

Operator Description

Assignment operators
=
Assignment. e.g. \$vVar = 5     (assigns the number 5 to \$vVar)
+=
-=
Subtraction assignment.
*=
Multiplication assignment.
/=
Division assignment.

Concatenation operators
& Concatenates/joins two strings. e.g. "one" & 10    (equals "one10")
&=
Concatenation assignment. e.g. \$vVar = "one", and then \$vVar &= 10    (\$vVar now equals "one10")

Mathematical operators
+ Adds two numbers. e.g. 10 + 20    (equals 30)
- Subtracts two numbers. e.g. 20 - 10    (equals 10)
Also acts as a unary minus (sets the negative value of a variable)
* Multiplies two numbers. e.g. 20 * 10    (equals 200)
/ Divides two numbers. e.g. 20 / 10    (equals 2)
^ Raises a number to the power. e.g. 2 ^ 4    (equals 16)

Comparison operators (case insensitive if used with strings except for ==)
= Tests if two values are equal. e.g. If \$var = 5 Then    (true if \$vVar equals 5). Case insensitive when used with strings.
== Tests if two strings are equal. Case sensitive. The left and right values are converted to strings if they are not strings already. This operator should only be used if string comparisons need to be case sensitive.
<> Tests if two values are not equal. Case insensitive when used with strings. To do a case sensitive not equal comparison use Not ("string1" == "string2")
> Tests if the first value is greater than the second. Strings are compared lexicographically even if the contents of the string happen to be numeric.
>= Tests if the first value is greater than or equal to the second. Strings are compared lexicographically even if the contents of the string happen to be numeric.
< Tests if the first value is less than the second. Strings are compared lexicographically even if the contents of the string happen to be numeric.
<= Tests if the first value is less than or equal to the second. Strings are compared lexicographically even if the contents of the string happen to be numeric.

Logical operators
And Logical And operation. e.g. If \$vVar = 5 And \$vVar2 > 6 Then    (True if \$vVar equals 5 and \$vVar2 is greater than 6)
Or Logical Or operation. e.g. If \$vVar = 5 Or \$vVar2 > 6 Then    (True if \$vVar equals 5 or \$vVar2 is greater than 6)
Not Logical Not operation. e.g. Not 1    (False)

Conditional operator
? : Select conditionally an expression. e.g. \$condition ? \$expression1 : \$expression2    (\$expression1 if \$condition is True or \$expression2 if False) See the Ternary operator for an example.

When more than one operator is used in an expression the order in which things happen is controlled by operator precedence. The precedence used in AutoIt is given below. Where two operators have the same precedence the expression is evaluated left to right.

From highest precedence to lowest:

Not
^
* /
+ -
&
< > <= >= = <> ==

And Or

e.g. 2 + 4 * 10 is evaluated as 42:

4 * 10    (equals 40)

2 + 40    (equals 42)

As the * has a higher precedence than + it occurs before the addition.

You can use brackets to force a part of the expression to be evaluated first.

e.g. (2 + 4) * 10 equals 60.

Note the following when using the logical operators And, Or:

e.g. If MyFunc1() Or MyFunc2() Then     (MyFunc2() is not called if MyFunc1() returns true)

e.g. If MyFunc1() And MyFunc2() Then    (MyFunc2() is not called if MyFunc1() returns false)

Note: Care is needed if comparing mixed datatypes, as unless the == case-sensitive string operator is used, mixed comparisons are usually made numerically. Most strings will be evaluated as 0 and so the result may well not be the one expected. It is recommended to force the items being compared into the same datatype using Number/String before the comparison.