From other programming languages I know compiler options that enable shortcut evaluation of compound condition expressions connected with AND and OR, so that in a (pseudo-)statement like
IF (cond1) AND (cond2) AND (cond3) FINAL
The same applies here.
If you trace through APL code with :If and :andif statements you will see that APL skips the block as soon as one of the conditions (:[AND]IF) is false.
To execute the FINAL statement ALL the :andif statements (and the code preceding them) must be evaluated.
The reverse is true for :orif statements: APL will execute the FINAL statement(s) as soon as one is TRUE. All others after will be skipped.
In other works it executes all the statements until an :[OR]IF is TRUE.
What is unusual is that APL allows us to visually (and conveniently) insert code between :XXif .
If cond2 above was a boolean returning fn instead of a simple expression (e.g. IF (x>y) AND (FN2(y)) ...) and you were allowed to trace thru them you would experience the exact same behaviour as in APL. The only difference is that some languages allow you to mix AND and OR and that this behaviour is not always obvious (and may vary from one language to another) whereas APL forbids the mix of the 2 (thanks God).
One thing that confuses people sometimes is the flow of execution when :ORIF statements are involved.
Consider the following:
[1] :IF cond1
[2] :orif cond2
[3] doThis
[4] :endif
If cond1 is true line [2] is skipped and line [3] is executed right away.
If it false line [2] is also executed and depending on the outcome line [3] MAY be executed.
That is fairly well understood by most.
But if cond2 is a very complex statement it may be broken down into more readable, simpler statements like this:
[1] :IF cond1
[2] cond2<-...
[3] :orif cond2
[4] doThis
[5] :endif
If cond1 is true, line [4] is executed right away. If it false cond2 MUST be evaluated and in order to do that line [2] must be executed first.
If you are tracing thru, it may surprise you to see the code on line [2] being executed when cond1 is FALSE.
We naturally assume that the code should be skipped because the condition was FALSE and indeed, if it spans several lines, it looks confusing.
Again if we were to trace thru the lines of code of another language with fns instead of a simple expression we would see the exact same behaviour as in APL.