as per my knowledge yes.
take each row, and evaluate.
what happens NOT IN is replaced by IN operator?
first tuple from A, (12,A,60) taken, condition age IN ( some values )
if age = value1 or age = value2 or age = value3 or ........ then return true.
what happens in case of NOT IN
if age ≠ value1 and age ≠ value2 and age ≠ value3 and ........ then return true.
yes my value is not matched by any value (in case of empty table also) ===> return true.
for confirmation i run it on W3 Schools.com also.
NOT IN (EMPTY TABLE) ====> always true.
IN (EMPTY TABLE) ====> always false.