• infix (with arguments on either side, such as + in 3 + 4, or = in a = 7)
 • prefix (with one argument on its right side, such as !a for logical negation)
 • or postfix (with one argument on its left side, such as a++ for incrementing a)
The assignment operation can be written either as the Assign() function or as an infix operator =. Similarly, subtraction can be done with the Subtract() function or the infix minus sign; they are equivalent inside JMP.
 Note: Usually white space is ignored in JSL, so that “netincomeaftertaxes” and “net income after taxes” are the same thing. There is one exception: the two-character operators must not have a space between characters. Always enter the following operators without spaces in between: ||, |/, <=, >=, !=, ==, +=, -=, *=, /=, ++, --, <<, ::, :*, :/, /*, */
Another common operator is the semicolon ( ; ). You use the semicolon to:
 •
 • End an expression. Though the semicolon is permitted at the end of an expression, it is not the expression terminator used in other languages.
So b * c is evaluated first, and then the result is added to a.
+ takes precedence over -:
So b * c is evaluated, and then the result is added to a. d is then subtracted from the result of a + b * c.
Operators and Their Function Equivalents in Order of Precedence shows operators shaded in order of precedence and each operator’s function equivalent.
 Operator Function Syntax Explanation { } List {a,b} List(a,b) Construct a list. [ ] Subscript a[b,c] Subscript(a,b,c) Subscripts identify specific elements within a data element a, where a could be a list, a matrix, a data column, a platform object, a display box, and so on. ++ Post Increment a++ Adds one (1) to a, in place. – – Post Decrement a– – Subtracts one (1) from a, in place. ^ Power a^b Power(a,b) Power(x) Raise a to exponent power b. With only one argument, 2 is assumed as the power, so Power(x) computes x2. – Minus –a Minus(a) ! Not !a Not(a) Logical Not. Maps nonzero (or true) values to 0 (which means false). Maps 0 (or false) values to 1 (which means true). * Multiply a*b Multiply(a,b) Multiplies a by b. :* EMult a:*b EMult(a,b) Elementwise multiplication for matrices a and b. (Each element in matrix a is multiplied by each element in matrix b.) / Divide a/b Divide(a,b) Divide(x) Divide(a, b) divides a by b. Divide(x) interprets the argument as a denominator and implies 1 as the numerator, yielding the reciprocal 1/x. :/ EDiv a:/b EDiv(a,b) Elementwise division for matrices a and b. (Each element in matrix a is divided by each element in matrix b.) + Add a+b Add(a,b) Adds a and b. – Subtract a–b Subtract(a,b) Subtracts b from a. || Concat a||b Concat(a,b) Joins two or more strings; two or more lists; and horizontally concatenates matrices. See Concatenate Lists in Data Structures or the JSL Syntax Reference for details. |/ VConcat matrix1|/matrix2 VConcat(matrix1, matrix2) Vertically concatenate matrices. (Use || or Concat() to horizontally concatenate matrices.) :: Index a::b Index(a,b) (Colons are also used as prefix operators for scoping, where :a means data table column a, and ::a means JSL global variable a. See Scoping Operators for details.) << Send object << message Send(object, message) Send message to object. == Equal a==b Equal(a,b)... Boolean values for comparisons. They all return 1 if true, 0 if false. Missing values in either a or b causes a return value of missing, which evaluates as neither true nor false. See Missing Values, for treatment of missing values. != Not Equal a!=b Not Equal(a,b)... < Less a Greater a>b Greater(a,b) >= Greater or Equal a>=b <=, < Less Equal Less a<=b