Mining difficulty is determined by the amount of time it takes to solve 2016 blocks. Every 2016 blocks, the nodes calculate how long it took since the previous adjustment.
If it took less than 20160 minutes, then the blocks are coming too fast (faster than an average of one every 10 minutes). The nodes then increase the difficulty by the same percentage as the excess speed. This increase in difficulty makes it so that if there is no additional hash power added to the network, the next 2016 blocks will take 20160 minutes.
If it took more than 20160 minutes, then the blocks aren't coming fast enough (slower than an average of one every 10 minutes). The nodes then decrease the difficulty by the same percentage as the missing speed. This decrease in difficulty makes it so that if there is no additional hash power added to the network, the next 2016 blocks will take 20160 minutes.
Since miners are always trying to increase their income, they keep adding hash power to the network. This increase in hash power speeds up the blocks and causes the next adjustment to increase the difficulty. Eventually it will reach a point where the miners are spending more on hash power than they are earning from mining. At that point mining is no longer profitable for those who have the highest expenses per hash. Many of them will shut down their equipment, which will reduce total hash power on the network and difficulty will drop. This could happen in a few months, or it may not happen for a few decades. Regardless, when it does happen, the difficulty will increase and decrease as miners add and remove hardware to try to maintain profitability. Eventually an equilibrium will be reached, at which time difficulty will slowly increase in response to incremental advancements in technology leading to cheaper hashing.
And this is called detailed and professional explanation. Thank you very much!
I always have problems to explain this details .. Now i will have link to your post like an answer