Keep in mind, that when you see an equals sign (=), it is normally either being used to assign something to a variable, or it is being used to compare two items.
variable = expression
if variable=expression then ...
In the first case, there can only be one target to receive the result. In the first example above, light+i is not a target, it is an expression in its own right. So light+1 cannot be used in the first form, but might be used in the second form.
You might occasionally see another varfiation, such as
variable=expression=expression.
This form invites a comparison of expression to expression, then assigns the True or False result to the variable.
And of course, another special case exists when = is used with < or > to indicate less than or equal to, or > than or equal to, and finally, you can assign values to constants, which appear to be variables, but actually cause the compiler to use the assigned value when and where the constant appears in the program.
variable = expression
if variable=expression then ...
In the first case, there can only be one target to receive the result. In the first example above, light+i is not a target, it is an expression in its own right. So light+1 cannot be used in the first form, but might be used in the second form.
You might occasionally see another varfiation, such as
variable=expression=expression.
This form invites a comparison of expression to expression, then assigns the True or False result to the variable.
And of course, another special case exists when = is used with < or > to indicate less than or equal to, or > than or equal to, and finally, you can assign values to constants, which appear to be variables, but actually cause the compiler to use the assigned value when and where the constant appears in the program.