Android Gradle dependency tree, use of square bracket

I was looking at the Gradle dependency report for my Android project and came across the following statements.

+--- com.google.android.gms:play-services-gcm:11.0.4
|    +--- com.google.android.gms:play-services-base:[11.0.4] -> 11.0.4
|    |    +--- com.google.android.gms:play-services-basement:[11.0.4] -> 11.0.4
|    |    |    \--- com.android.support:support-v4:25.2.0 -> 25.4.0 (*)
|    |    \--- com.google.android.gms:play-services-tasks:[11.0.4] -> 11.0.4
|    |         \--- com.google.android.gms:play-services-basement:[11.0.4] -> 11.0.4 (*)

What I don’t understand is com.google.android.gms:play-services-base:[11.0.4] -> 11.0.4, the use of square bracket and resolving to the same version?

Here is how the dependency has been declared in my project

compile 'com.google.android.gms:play-services-gcm:11.0.4'