Está estudando pra certificação neh?? 😀 Isso aí você tem que imaginar como um loop aninhado, no estilo:
for query loop
for subquery loop
end loop;
end loop;
ou seja, pra cada linha da query (consulta externa) a subquery (consulta interna) sera executada. Justamente por causa dessa correlação entre as duas consultas, ou seja, dependência da consulta interna (subconsulta) com a linha da externa, dada pela condição s.department_id=p.department_id do seu exemplo.
Se a correlação não existir, então o inverso que ocorre, e a consulta externa é executada no loop interno.