How zookeeper watches nodes for going down

My question might seem silly. However, I cannot figure out how zookeeper watches for changes.

One of the thing that zookeeper handles is election. Assume I have a scenario that I have three redis instances which one of them is master and two of them are slave, and I want not to send the command to master when it's down.

My first question is that how zookeeper can figure out the redis master is down.

The second scenario is that one of instances of zookeeper is down. assume we have 5 instances of zookeeper and node 1 is down. what happens if in the application i'm trying to connect to node 1?