Let's pretend you have a cookie you want to eat. Before you eat the cookie, you need to check if it's safe to eat. This means you need to make sure it's not spoiled or has any dirt on it. This is the time of check.
Once you've checked your cookie and it's safe to eat, you can go ahead and eat it. This is the time of use.
The time of check to time of use concept is the same thing but with computer programs. Before a program can use a particular resource (like a file or a variable), it needs to check if it's available and has the correct permissions. This is the time of check.
Once the program has finished checking and the resource is available and has the correct permissions, the program can use the resource. This is the time of use.
It's important to make sure the time of check and time of use happen in the correct order, just like you need to check your cookie before you eat it to make sure it's safe. If the time of check happens after the time of use, the program might try to use a resource that it doesn't have permission for, like trying to eat a spoiled cookie. This can cause errors or even crash the program.