As the name suggests, nanocode is at a lower-level than microcode.
Machine code is the raw instructions fed into a processor, this is first decoded by the microcode. This is a translation from the hierarchical organization of instructions that makes sense to humans, to the actual steps that need to be taken in various parts of the processor. Microcode is written in a lookup table to be referenced as each instruction is executed.
Nanocode is more finely grained than microcode. It is responsible for converting the logic of the microcode to the low-level electrical signals that will cause the desired result. Nanocode is hardwired to do such things as enabling logic gates to fire their output onto interconnects, enabling the proper gates to input same, and setting the proper flags on the ALU. Very low level stuff that each individual block of a processor needs to carry out its little part of the instruction.
See Also: microcode