You may want to look at the Operator precedence - JavaScript | MDN table, and see that Logical NOT (!) has much higher precedence than Logical AND (&&).

This means that the following are not equivalent:

!(a && b)
// if either a or b, or both are false, this is true
// if a and b are true, this is false
!a && b
// if a is false and b is true, this is true
// if a is true or b is false, this is false

In your example snippet:

if (!archerIsAwake && prisionerIsAwake)

This would read as: if the archer is not awake (asleep) and the prisoner is awake…