achow101 thanks a lot, it all makes sense now. Great explanation. And what you said led me more digging into details.
this is what I understand, in summary;
example for block 540494
difficulty = 7019199231177.173
maxTarget (Hexadecimal) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
maxTarget (Decimal) 26959535291011309493156476344723991336010898738574164086137773096960
target = maxTarget / difficulty
target (decimal) = 3840827764407250020633179921320621786723403550981928027
so calculated hash must be less than or equal to the target value...
target (hexadecimal) = 2819A0FFFFFFFF791A56A92A5F71C70648653408B0B45B
which is represented as follows;
0000000000000000002819A0FFFFFFFF791A56A92A5F71C70648653408B0B45B
and using the nonce '2097181953' the valid hash for this block;
00000000000000000024ADA2B097CB7B76BB751751DADC55A47DB2238863EE96
so it is clear to see that the hash is less than the target...
I understand why there are zeros. it is just the representation. it all makes sense now..
Just one more thing, so the nonce has nothing to do with the difficulty number right? so nonce can be greater than difficulty value? they are not related at all? if they are not related what is the maximum number a nonce can be? when the miner decides to change something in the block?
EDIT: I believe it can be 2147483647 at most. which is the largest 32bit value. so when it hits this number, miner decides to change something else within the block